home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / criterrc.zip / CETEST.C next >
C/C++ Source or Header  |  1991-02-17  |  3KB  |  74 lines

  1. #include <errno.h>
  2. #include <stdio.h>
  3. #include "criterr.h"
  4.  
  5. /* example program to test critical error trap routine */
  6. /* link in module criterr.obj, or add to library */
  7. /* for buffered i/o devices, better flush them otherwise errors */
  8. /* will be delayed until buffer gets written */
  9.  
  10. /* WRITTEN BY PETER HYMAN, (609) 799-2638 */
  11.  
  12. void disp_cerr( void );                          /* function to display critical error */
  13.  
  14. main()
  15. {
  16.     int i;
  17.     FILE *fp;
  18.  
  19.     i = criterr( 1 );                              /* trap critical error */
  20.     fputs( "abcde", stdprn );
  21.     fflush ( stdprn );                                  /* TAKE PRINTER OFF LINE */
  22.     if ( cerr.ceflag )
  23.             disp_cerr();                               /* show error */
  24.  
  25.     clrcriterr();                                  /* clear structure */
  26.  
  27.     if ( ( fp = fopen( "a:junk", "w" ) ) == NULL ) /* OPEN DRIVE A DOOR OR PUT A DISK IN */
  28.     {
  29.         if ( cerr.ceflag )
  30.                 disp_cerr();                             /* show error */
  31.         else if ( errno )                            /* see if file not found error or such */
  32.                 printf( "Non Critical Error %d -- %s\n", errno, os_errlist[errno] );
  33.     }
  34.     if ( criterr( 1 ) )                            /* try to turn it on again */
  35.             printf( "Critical error handler already installed\n" );
  36.  
  37.     printf( "Critical error trap is now turned off.\n");
  38.     i = criterr( 0 );                              /* remove trap */
  39.  
  40.     /* now a critical error will be generated by DOS */
  41.     fp = fopen( "a:junk", "w" );
  42. }
  43.  
  44. /*****************************************************************************
  45.  *                          --- void disp_cerr ---
  46.  *
  47.  * FUNCTION:    DISPLAYS CRITICAL ERROR AND RELATED MESSAGES
  48.  *****************************************************************************/
  49. void disp_cerr()
  50. {
  51.    printf(
  52. "                        Critical error: %2d -- %s\n\
  53. Critical Error Code in AX (ret by DOS): %X\n\
  54.                            Device Name: %8s\n\
  55.                                  Drive: %c:\n\
  56.                          READ or WRITE: %2d -- %s\n\
  57.                     DISK Area of Error: %2d -- %s\n\
  58.                          Response Mask: %2d -- %s\n\
  59.       Extended Error Number (Dos >= 3): %2d -- %s\n\
  60.                            Error Class: %2d -- %s\n\
  61.   Error Recovery Action Recommendation: %2d -- %s\n\
  62.                            Error Locus: %2d -- %s\n\n",
  63. cerr.cerrno, crit_errlist[cerr.cerrno], cerr.cerrtype,
  64. cerr.name,cerr.drive,
  65. cerr.read_wr, readwr_list[cerr.read_wr],
  66. cerr.disk_area, diskarea_list[cerr.disk_area],
  67. cerr.resp_mask, respmask_list[cerr.resp_mask],
  68. cerr.exterr,os_errlist[cerr.exterr],
  69. cerr.eclass,err_classlist[cerr.eclass],
  70. cerr.action, err_actionlist[cerr.action],
  71. cerr.locus, err_locuslist[cerr.locus] );
  72. }
  73.  
  74.